package com.wyw.design.model.learning.behavioral.status;

/**
 * @Title   上下文角色
 *
 * @Description
 * @Author Mr Wu yewen.wu.china@gmail.com
 * @Date 2023/4/19 9:46
 * Update History:
 * Author        Time            Content
 */
public class Ctx {
    // 上下文角色一般会包含全部状态，使用静态常量修饰
    public final static State state1 = new ConcreteState1();
    public final static State state2 = new ConcreteState2();
    // 定义上下文保存的当前状态
    private State currentState;

    public State getCurrentState() {
        return currentState;
    }

    // 设置当前状态
    public void setCurrentState(State currentState) {
        this.currentState = currentState;
        // 初始化state中的上下文
        this.currentState.setContext(this);
    }

    // 上下文一般包含抽象状态中的所有行为，然后委托给state
    public void request1() {
        this.currentState.handle1();
    }
    public void request2() {
        this.currentState.handle2();
    }
}
